In today's world, blockchains are used for wide variety of applications. A blockchain is a Cryptographic Distributed Ledger (CDL). A distributed ledger is ledger that is replicated in whole or in part to multiple computers. The CDL can have at least some of these properties: irreversibility (once a transaction is recorded, it cannot be reversed), accessibility (any party can access the CDL in whole or in part), chronological and time-stamped (all parties know when a transaction was added to the ledger), consensus based (a transaction is added only if it is approved, typically unanimously, by parties on the network), verifiability (all transactions can be cryptographically verified).
A distributed ledger is a continuously growing list of records that typically apply cryptographic techniques such as storing cryptographic hashes relating to other blocks. A blockchain is one common instance of a distributed ledger and may be used as a public ledger to store information. Although, primarily used for financial transactions, a blockchain can store various information related to goods and services (i.e., products, packages, status, etc.). A decentralized scheme provides authority and trust to a decentralized network and enables its nodes to continuously and sequentially record their transactions on a public “block”, creating a unique “chain” referred to as a blockchain. Cryptography, via hash codes, is used to secure an authentication of a transaction source and removes a central intermediary. A blockchain is a distributed database that maintains a continuously-growing list of records in the blockchain blocks, which are secured from tampering and revision due to their immutable properties. Each block contains a timestamp and a link to a previous block. A blockchain can be used to hold, track, transfer and verify information. Since a blockchain is a distributed system, before adding a transaction to the blockchain ledger, all peers need to reach a consensus status.
Because of the distributed nature of a blockchain, it can be used to store user identity traits that may be used later for validation of the identity of the user. However, trusted information in a blockchain may be used to access resources or provide proof of an event. The problem with this use of trusted information lays in a distributed nature of a blockchain because user secret information may be distributed to others and the user must rely on their security processes. Obviously, limiting the distribution of secret information is paramount. Some conventional solution use zero knowledge proofs and non-interactive zero-knowledge proofs concepts for generation of random numbers used as a witness seed. The problem with these solutions is that the witness seed implementation is limited based on the fact that the witness data is not connected to the user identity trait data. Furthermore, the identity data may be encrypted with one key derived from the witness seed and may be revealed by an intruder who obtains the key. For example, a digital user driver's license data (e.g., name, date of birth, license number, etc.) is hashed together and encrypted with one key. However, the user may not want to provide or distribute the entire set of data traits from the digital user driver's license to get validated and much rather use only one data trait element as a witness for validation.
Accordingly, what is needed is an efficient automated method for storing user identification traits in a blockchain in a way that the identity of the user can be stored more securely and can be reliably verified to be trusted using witness data.